.. :validated: 3.2.0

Решение проблемы долгих запросов при работе с почтовой системой RuPost
=========================================================================================================================

На контроллеры **ALD Pro** cо стороны **RuPost** массово поступают запросы на поиск (`ldapsearch`), которые выполняются по 3-6 секунд, что приводит к отказу в обслуживании **LDAP** и останавливает работу **DNS**:

.. code-block:: bash

    SRCH base="cn=users,cn=accounts,dc=company,dc=ru" scope=2 filter="(&(|(mail=aldpro@company.ru)(mail=aldpro@company.ru)(proxyAddresses=aldpro@company.ru))(&(objectClass=person)(mail=*@*)

Если таких запросов одновременно больше, чем потоков в `389 DS`, то `389 DS` перестает отвечать на любые запросы. В лог-файле это выглядит как выделение файловых дескрипторов без дальнейших операций.

Запросом ниже можно произвести проверку:

.. code-block:: bash

    time ldapsearch -b "cn=users,cn=accounts,$(ipa env basedn|cut -d ' ' -f4)" "(&(|(mail=somebody@$(hostname -d))(mail=somebody@$(hostname -d))(proxyAddresses=somebody@$(hostname -d)))(&(objectClass=person)(mail=*@*)(proxyAddresses=SMTP:*)))" "* aci" -Q

Если зафиксировано время более 1000 мс, то рекомендуется провести индексацию атрибута `proxyAddresses` в **LDAP**. Данную процедуру необходимо произвести на каждом контроллере домена только один раз.

Для этого необходимо выполнить действия ниже.

Вывести название `INSTANCE LDAP` командой, индексы нужно добавить на основной каталог, не на глобальный каталог:

.. code-block:: bash

    sudo dsctl -l

Произвести добавление индексов:

.. code-block:: bash

    sudo dsconf INSTANCE-NAME backend index add --index-type eq --attr proxyAddresses userRoot
    sudo dsconf INSTANCE-NAME backend index set --add-type sub --attr proxyAddresses userRoot
    sudo dsconf INSTANCE-NAME backend index set --add-type pres --attr proxyAddresses userRoot

Проверить командой, что все типы добавлены:

.. code-block:: bash

    sudo dsconf INSTANCE-NAME backend index get --attr proxyAddresses userRoot

Произвести остановку `INSTANCE LDAP` командой:

.. code-block:: bash

    sudo dsctl INSTANCE-NAME stop

Запустить переиндексацию (может занять до нескольких минут) командой:

.. code-block:: bash

    sudo dsctl slapd-INSTANCE-NAME db2index userRoot

Произвести запуск `INSTANCE LDAP` командой:

.. code-block:: bash

    sudo dsctl INSTANCE-NAME start

